﻿Public Partial Class gestionHorariosTeoria
    Inherits System.Web.UI.Page

    '****************************************************************************************
    '************ PROCEDIMIENTOS PRIVADOS PARA USO DESDE EL CONTROL DE EVENTOS **************
    '****************************************************************************************

    'Rellena las opciones del DDLOperaciones por código
    Private Sub rellenar_operaciones()
        'Dim permisos As ArrayList = Session(Comun._VARIABLE_PERMISOS)

        DDLOperaciones.Items.Clear()
        DDLOperaciones.Items.Add(New ListItem("<Seleccione una operación...>", "ninguna"))
        DDLOperaciones.Items.Add(New ListItem("Guardar como nueva version...", "guardar_nueva_version"))
        DDLOperaciones.Items.Add(New ListItem("Guardar como plantilla...", "guardar_plantilla"))

        DDLOperaciones.DataBind()

    End Sub

    'Crea e inicializa las variables de sesión necesarias
    Private Sub inicializar_variables_sesion()
        'Recogemos la Consulta SQL Diseñada originalmente en el componente y la guardamos
        'En una variable de sesión que sirva de base para el resto de filtros
        Session("ConsultaBasicaHorariosTeoria") = SDSHorariosTeoria.SelectCommand
        Session("FiltroHorariosTeoria") = String.Empty
    End Sub

    'Contruye un filtro SQL a partir de los campos rellenos en la sección de búsquedas
    Private Function contruir_filtro_horarios_teoria() As String
        Dim filtro As String = String.Empty

        'Nos quedamos con clases de Teoría sólo
        filtro = " WHERE HORARIOS.CODIGO_TIPO_CLASE = 'TE' "

        'Si ha elegido algún curso
        If Not DDLCurso.SelectedValue.Equals("todos") Then
            If String.IsNullOrEmpty(filtro) Then
                filtro = " WHERE "
            Else
                filtro = filtro & " AND "
            End If

            filtro = filtro & " HORARIOS.CODIGO_GRUPO='" & DDLCurso.SelectedValue() & "'"
        End If

        'Si ha elegido algún Periodo
        If Not DDLPeriodo.SelectedValue.Equals("todos") Then
            If String.IsNullOrEmpty(filtro) Then
                filtro = " WHERE "
            Else
                filtro = filtro & " AND "
            End If

            filtro = filtro & " HORARIOS.CODIGO_PERIODO='" & DDLPeriodo.SelectedValue() & "'"
        End If

        Return filtro
    End Function


    'Permite actualizar el horario que se esté mostrando en pantalla
    'en el momento actual en función de las opciones seleccionadas
    'en los DDL's de la sección de Búsquedas
    Private Sub ConfigurarBusqueda()
        Dim filtro As String = String.Empty

        filtro = contruir_filtro_horarios_teoria()
        Session("FiltroHorariosTeoria") = filtro

      

        'AQUÍ HABRÍA QUE CODIFICAR LO NECESARIO PARA RECARGAR EL CALENDARIO
        'QUE SE ESTÉ MOSTRANDO



        Try

        Catch ex As Exception
            TBErrorDetalles.Text = filtro & " --> " & ex.ToString()
            HFError_ModalPopupExtender.Show()
        End Try
    End Sub

    'Permite actualizar la consulta select del DataSource asociado a GVListadoAlumnos
    'para ser invocado cada vez que, por algún evento haya que actualizarla
    Private Sub RecargarHorariosTeoria()
        'si en ese momento se está trabajando con búsquedas avanzadas
        'se recarga tras un evento
        ConfigurarBusqueda()

    End Sub

    'Rellena la DDLGrupo en función del curso académico elegido
    Private Sub recargar_DDLGrupo()

        Dim filtroGrupos As String = "SELECT CODIGO_GRUPO, DESCRIPCION_GRUPO FROM GRUPOS " & _
                                     "WHERE CURSO_ACADEMICO='" & DDLCurso.SelectedValue & "'"
        Comun.Rellenar_DDL_SinNulos(DDLGrupo, filtroGrupos, _
                     "CODIGO_GRUPO", "DESCRIPCION_GRUPO")

    End Sub

    'Rellena la DDLVersion en función del curso académico, titulación y grupo seleccionados
    Private Sub recargar_DDLVersion()

        Dim filtroVersion As String = "SELECT NUMERO_VERSION, CODIGO_HORARIO FROM HORARIOS " & _
                                     "WHERE CURSO_ACADEMICO='" & DDLCurso.SelectedValue & "' " & _
                                        "AND CODIGO_GRUPO = '" & DDLGrupo.SelectedValue & "' " & _
                                        "AND CODIGO_PERIODO='" & DDLPeriodo.SelectedValue & "' " & _
                                        "AND CODIGO_TIPO_HORARIO='" & DDLTipoHorario.SelectedValue & "' " & _
                                     " ORDER BY NUMERO_VERSION DESC"
        Comun.Rellenar_DDL_SinNulos(DDLVersion, filtroVersion, _
                     "CODIGO_HORARIO", "NUMERO_VERSION")

    End Sub


    '****************************************************************************************




    '****************************************************************************************
    '************ PROCEDIMIENTOS DE CONTROL DE EVENTOS **************************************
    '****************************************************************************************

    Private Sub gestionHorariosTeoria_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        'Ocultamos los paneles de aviso y errores
        'para que no se vean en las recargas de la página
        PnlError.Style.Add("display", "none")
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Dim permisos As ArrayList = Session(Comun._VARIABLE_PERMISOS)

        'Comun.establecer_cierre_automatico(Session, Request, Response)

        Try
            'If permisos.Contains("ROL_MODIFICAR_HORARIOS_TEORIA") Then
            'Debido a que cuando un contro GridView ordena, cambia de página o cualquier otro evento
            'tras la recarga de la página se pierde cualquier filtro aplicado previamente,
            'en el evento de carga de la página hay que volver a aplicar los filtros almacenados
            'y volver a vincular los datos

            'Si es la primera vez que se carga la página
            If Not (Page.IsPostBack) Then
                'si es la primera vez que se carga la página
                inicializar_variables_sesion()

                Comun.Rellenar_DDLTodosCursos_SinNulos(DDLCurso)
                Comun.Rellenar_DDL_SinNulos(DDLPeriodo, "SELECT CODIGO_PERIODO, DESCRIPCION_PERIODO FROM PERIODOS", _
                                            "CODIGO_PERIODO", "DESCRIPCION_PERIODO")

                Comun.Rellenar_DDL_SinNulos(DDLTipoHorario, "SELECT CODIGO_TIPO_HORARIO, DESCRIPCION_TIPO_HORARIO FROM TIPOS_HORARIO", _
                                      "CODIGO_TIPO_HORARIO", "DESCRIPCION_TIPO_HORARIO")

                recargar_DDLGrupo()
                recargar_DDLVersion()

                rellenar_operaciones()

                RecargarHorariosTeoria()
            End If

            'Else
            'Comun.salir(Session, Request, Response)
            'End If

            'If Not permisos.Contains("ROL_MODIFICAR_HORARIOS_TEORIA") Then
            '    LblHorariosTeoria.Enabled = False
            'End If

            'If Not permisos.Contains("ROL_MODIFICAR_HORARIOS_TUTORIAS") Then
            '    LBHorariosTutorias.Enabled = False
            'End If

            'If Not permisos.Contains("ROL_ADMINISTRADOR") Then
            '    LBAdministracion.Visible = False
            'End If

        Catch ex As Exception
            Comun.salir(Session, Request, Response)
        End Try

    End Sub

    Protected Sub DDLCurso_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DDLCurso.SelectedIndexChanged
        recargar_DDLGrupo()
        recargar_DDLVersion()
    End Sub

    Protected Sub LBSalir_Click(ByVal sender As Object, ByVal e As EventArgs) Handles LBSalir.Click
        Comun.salir(Session, Request, Response)
    End Sub

    Protected Sub LBErrorDetalles_Click(ByVal sender As Object, ByVal e As EventArgs) Handles LBErrorDetalles.Click
        'Si los detalles están visibles
        If TBErrorDetalles.Visible = True Then
            TBErrorDetalles.Visible = False
            LBErrorDetalles.Text = "Mostar detalles"
        Else 'si están ocultos
            TBErrorDetalles.Visible = True
            LBErrorDetalles.Text = "Ocultar detalles"
        End If
    End Sub

    Protected Sub DDLGrupo_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DDLGrupo.SelectedIndexChanged
        recargar_DDLVersion()
    End Sub

    Protected Sub DDLPeriodo_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DDLPeriodo.SelectedIndexChanged
        recargar_DDLVersion()
    End Sub

    Protected Sub DDLPlantillas_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DDLTipoHorario.SelectedIndexChanged
        recargar_DDLVersion()
    End Sub
End Class